
import jieba
from wordcloud import WordCloud
from matplotlib import pyplot as plt
"""
1.读取文件中的内容
文件操作三步曲：1.打开文件  2.读、写文件  3.关闭文件
"""

fp=open(r"C:\Users\86199\Desktop\十四五时期经济社会发展主要目标.txt","r",encoding="utf-8")  # 在字符串前面架上r或者R，代表保留原始字符串
text=fp.read()   #读文件
#print(text[:50])
fp.close()   #关闭文件

"""
2.对文本进行分词操作
"""
content=jieba.lcut(text)
#print(content[:30])

"""
3.优化文本：过滤无效词
            统计词云的词频
"""
wordFreq={}    #空字典，存放统计的结果
for word in content:
    if len(word)<2:   #过滤掉单个词
        continue
    elif word=="曹操" or word=="丞相":
        word="曹操"
    elif word=="孔明" or word=="孔明曰":
        word="孔明"
    elif word=="玄德" or word=="玄德曰":
        word="刘备"
    elif word=="关公" or word=="云长":
        word="关羽"
    wordFreq[word]=wordFreq.get(word,0)+1   #统计操作

#print(items[:50])

exclude={"宁吉喆"}
for excludeWord in exclude:
    del wordFreq[excludeWord]   #从字典中删除无效的词语

"""
4.按照词频进行降序排列
"""
items=list(wordFreq.items())  #获取字典的元素
items.sort(reverse=True,key=lambda x:x[1])
c=[]  #存放词云
for i in range(50):
    c.append(items[i][0])

"""
5.生成词云
"""
words=" ".join(c)
wc=WordCloud(height=200,width=300,background_color="white",font_path="msyh.ttc")   #通过WordCloud（）类实例化一个对象
wc.generate(words)  #生成词云


"""
6.词云可视化
"""
plt.imshow(wc)   #加载词云
plt.axis("off")   #隐藏坐标
plt.show()   #显示图